home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
netz
/
mailfilter
/
theanswer
/
rexx
/
filterpuffer.install
next >
Wrap
Text File
|
1995-07-02
|
4KB
|
195 lines
/*
** Beginn des Scripts
*/
OPTIONS RESULTS
OPTIONS FAILAT 20
PARSE ARG archiv
IF archiv = '' THEN
quit('Format: FilterPuffer <LHa-Archiv oder Pufferdatei>',10)
IF ~EXISTS(archiv) THEN
quit('Die Datei' archiv 'existiert nicht!',10)
IF ~SHOW(LIBRARIES,'rexxsupport.library') THEN
IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
quit('Kann die <rexxsupport.library> nicht öffnen!',10)
/*
** Pfad des temporären Verzeichnisses 'tempdir' zusammensetzen
*/
IF RIGHT(tempdir,1) ~= '/' & RIGHT(tempdir,1) ~= ':' THEN
tempdir = tempdir||'/WILAM-04431-92081'
ELSE
tempdir = tempdir||'WILAM-04431-92081'
/*
** 'tempdir' neu anlegen
*/
IF EXISTS(tempdir) THEN
ADDRESS COMMAND 'Delete "'||tempdir||'" ALL QUIET'
IF ~MAKEDIR(tempdir) THEN
quit('Verzeichnis' tempdir 'kann nicht angelegt werden!',10)
/*
** Pufferdatei öffnen, die ersten 7 Bytes einlesen und wieder schließen
*/
IF ~OPEN('testfile',archiv,'READ') THEN
quit('Fehler beim Öffnen der Pufferdatei' archiv||'!',rc)
string = READCH('testfile',7)
CLOSE('testfile')
/*
** Überprüfen ob die Pufferdatei mit LHA, LZX oder ZIP gepackt, oder
** ungepackt ist. Dann entsprechend nach 'tempdir' entpacken oder kopieren.
*/
SELECT
WHEN SUBSTR(string,3,3) = '-lh' & DATATYPE(SUBSTR(string,6,1)) = 'NUM' & RIGHT(string,1) = '-' THEN DO
SAY 'Entpacke LHA-Archiv "'||archiv||'" nach "'||tempdir||'/"'||'0a'x
ADDRESS COMMAND lha 'x -X' archiv '"'||tempdir||'/"'
END
WHEN SUBSTR(string,1,3) = 'LZX' THEN DO
SAY 'Entpacke LZX-Archiv "'||archiv||'" nach "'||tempdir||'/"'||'0a'x
ADDRESS COMMAND lzx '-X0 x' archiv '"'||tempdir||'/"'
END
WHEN SUBSTR(string,1,4) = 'PK'||'03'x||'04'x THEN DO
SAY 'Entpacke ZIP-Archiv "'||archiv||'" nach "'||tempdir||'/"'||'0a'x
olddir=PRAGMA('D',tempdir)
tarchiv=olddir
IF RIGHT(tarchiv,1) ~= '/' &RIGHT(tarchiv,1) ~= ':' THEN
tarchiv=tarchiv||'/'
tarchiv=tarchiv||archiv
IF UPPER(RIGHT(tarchiv,4)) = '.ZIP' THEN
tarchiv=LEFT(tarchiv,LENGTH(tarchiv)-4)
ADDRESS COMMAND unzip '-x "'||tarchiv||'"'
olddir=PRAGMA('D',olddir)
END
OTHERWISE DO
SAY 'Kopiere "'||archiv||'" nach "'||tempdir||'/'||archiv||'.sortin"'
ADDRESS COMMAND 'copy' archiv '"'||tempdir||'/'||archiv||'.sortin"'
END
END
IF rc ~= 0 THEN
quit('Fehler beim Entpacken/Kopieren der Pufferdatei' archiv||'!',rc)
SAY
/*
** Alle Filenamen auslesen
*/
filestring = SHOWDIR(tempdir,'FILE')
anzfiles = WORDS(filestring)
IF anzfiles = 0 THEN
quit('Die Pufferdatei enthielt keine Daten!',10)
/*
** Testen, ob MailFilter gestartet ist. Wenn nicht, dann jetzt starten
*/
IF ~SHOW(PORTS,'MAILFILTER') THEN DO
ADDRESS COMMAND
'run >NIL: <NIL: MAILFILTER:MailFilter'
DO 3 WHILE ~SHOW(PORTS,'MAILFILTER')
'WaitForPort MAILFILTER'
END
IF rc = 5 THEN
quit('Kann MailFilter nicht starten!',10)
END
/*
** Aktuelles Verzeichnis ermitteln
*/
pfad = PRAGMA(D)
IF RIGHT(pfad,1) ~= '/' & RIGHT(pfad,1) ~= ':' THEN
pfad = pfad||'/'
/*
** Alle Files aus dem temporären Verzeichnis lesen,
** filtern und im aktuellen Verzeichnis als ein Puffer
** abspeichern.
*/
DO i = 1 TO anzfiles
SAY 'Filtern von' WORD(filestring,i) '...'
ADDRESS MAILFILTER FILTER 'FROM "'||tempdir||'/'||WORD(filestring,i)||'" TO "'||pfad||'PUFFER"' JOIN
IF rc ~= 0 THEN
quit('Fehler beim Filtern der Datei' WORD(filestring,i) rc2,rc)
END
/*
** Einstellungen speichern, damit bei allen verwendeten
** Filtereinträgen das aktuelle Datum vermerkt wird.
*/
ADDRESS MAILFILTER SAVE
/*
** 'tempdir' komplett löschen
*/
ADDRESS COMMAND 'Delete "'||tempdir||'" ALL QUIET'
EXIT(0)
/*
** Script mit Meldung beenden
*/
quit:
PARSE ARG message,rcode
IF message ~= '' THEN
SAY message
IF OPEN('con','*','WRITE') THEN DO
CALL WRITECH('con','0A'x||'Bitte <RETURN> drücken')
CALL READLN('con')
END
EXIT(rcode)